package HomeWork;

import java.util.Scanner;

/*
已知某商场购物结算时支持如下三种结算方式：
1. 全额现金结算
2. 全额积分抵现，10积分 == 1元
3. 积分抵扣50元，剩余部分使用现金结算，10积分 == 1元
张三的账户积分余额为1000，现金余额为500，张三购买了80元商品，准备结算。
请设计程序定义三个方法（pay）分别模拟三种付款方式，在方法体中输出付款后的账户信息，并在主方法中完成方
法调用
 */
public class Strengthen02 {
    public static void main(String[] args) {
        double remain = 500.0;//账户余额
        int points = 1000;//积分余额
        double sum = remain + 50.0;//混合计算最大余额

        //输入商品金额
        double paymoney = paymoney(sum);//录入付款金额
        System.out.println("需要支付"+paymoney+"元.");


        //确定付款方式
        switch (payMethod()){
            case 1://cash
                pay(paymoney,remain);
                break;
            case 2://points
                pay(paymoney,points);
                break;
            case 3://all
                pay(paymoney,sum,remain,points);
                break;
        }

    }

    //输入支付方式确认：
    public static int payMethod(){
        Scanner sc = new Scanner(System.in);
        int way;
        do{
            System.out.println("请确认支付方式（【1】为现金支付，【2】为积分支付，【3】为混合支付）：");
            way = sc.nextInt();
            if(way > 0 && way < 4){
                break;
            }else{
                System.out.println("请输入正确的数字【1-3】！");
                System.out.println("--------------------------------------------------------");
            }
        }while(true);
        return way;
    }

    //输入支付金额
    public static double paymoney(double sum){
        Scanner sc = new Scanner(System.in);
        double paymoney;
        do{
            System.out.println("请输入需要支付的金额：");
            paymoney = sc.nextInt();
            /*
            判定是否合规，
            1.若小于0报错并重新输入;2.钱够则返回值；
             */
            if(paymoney < 0) {//1.若小于0报错并重新输入
                System.out.println("金额错误，请重新输入：");
                System.out.println("--------------------------");
            }else{//2.在钱够则返回值
                break;
            }
        }while(true);
        return paymoney;
    }

    //现金支付
    public static void pay(double paymoney, double remain){
        double temp;
        if(paymoney > remain){
                System.out.println("现金余额不足");
                System.out.println("--------------------------");
            }else{
                System.out.println("现金支付-付款成功：");
                temp = remain;
                remain -= paymoney;
                System.out.println("本次消费"+paymoney+"元，收您"+temp+"元，找零"+remain+"元。");
                System.out.println("欢迎爷下次光临！");
            }
    }

    //积分支付
    public static void pay(double paymoney, int points){
        if(paymoney > points/10.0){
            System.out.println("积分余额不足");
            System.out.println("--------------------------");
        }else{
            System.out.println("积分现金混合支付-付款成功：");
            points -= paymoney*10;
            System.out.println("本次扣除积分"+500+"，账户剩余积分"+points);
            System.out.println("欢迎爷下次光临！");
        }
    }

    //混合支付
    public static void pay(double paymoney, double sum, double remain,int points){
        if(paymoney > sum){
            System.out.println("总余额不足，穷鬼不要来消费：");
            System.out.println("--------------------------");
        }else{
            System.out.println("积分支付-付款成功：");
            remain -= paymoney + 50.0;
            points -= 500;
            System.out.println("本次扣除积分"+(int)(paymoney*10)+"，账户剩余积分"+ points);
            System.out.println("本次实际扣款："+(paymoney - 50.0)+"，您的账户剩余现金"+ remain);
        }
    }

    //确定



}
